# nabu

Un sistema gestor de contenido (CMS) para artículos en `Markdown`, escrito en `PHP`.

---

## Dependencias

* [PHP >= 7.0.0](https://www.php.net/ "Enlace al sitio web oficial de PHP")
* [MariaDB >= 10.5.10](https://mariadb.org/ "Enlace al sitio web oficial de MariaDB")
* [PHP SMTP](https://github.com/snipworks/php-smtp "Enlace al repositorio de PHP SMTP") (incluido en el proyecto).
* [Parsedown](https://github.com/erusev/parsedown "Enlace al repositorio git de Parsedown") (incluido en el proyecto).
* `php.ini`
    * `upload_max_filesize = 3M`

## Estructura del proyecto

    +---assets
    |   +---fonts
    |   +---icons
    |   +---images
    |   +---scripts
    |   \---styles
    +---controllers
    +---core
    +---database
    +---libs
    +---logs
    +---models
    +---storage
    |   +---avatars
    |   +---backgrounds
    |   \---covers
    \---views
        +---admin
        +---emails
        +---layouts
        \---pages

* `assets` - Contiene elementos estáticos.
    * `fonts` - Fuentes tipográficas.
    * `icons` - Favicon, paquetes de iconos, etc.
    * `images` - Imágenes de banners, logos, etc.
    * `scripts` - Contiene scripts de `JavaScript`.
    * `styles` - Contiene hojas de estilo `CSS`.
* `controllers` - Scripts de `PHP` que administran el flujo de datos del cliente y la base de datos.
* `core` - Contiene la configuración y el sistema de rutas del sitio web.
* `database` - Realiza la configuración y la conexión de la base de datos.
* `libs` - Contiene bibliotecas propias o de terceros.
* `logs` - Almacena registros de mensajes de errores y excepciones.
* `models` - Representan tablas de datos de la base de datos.
* `storage` - Almacena imágenes de banners y fotos de perfil, y portadas de los artículos.
* `views` - Contiene plantillas que generan páginas web `HTML`; muestran la interpretación de los datos al usuario.
    * `admin` - Contiene plantillas que construyen el panel de administración del sitio web.
    * `emails` - Contiene plantillas de correo electrónico `HTML`.
    * `layouts` - Contiene elementos de una página web (`header`, `navbar`, `footer`, etc.).
    * `pages` - Contiene plantillas que construyen el sitio web (página principal, inicio de sesión, registro de usuarios, vista de artículos, etc.).

## Archivo de configuración de la base de datos

Por defecto, `nabu` busca el archivo `database.config` dentro de la carpeta raíz del proyecto.

Estructura del archivo de configuración:

```php
<?php

return array(
  'dbms'     => 'mysql',
  'host'     => 'localhost',
  'database' => 'nabu',
  'user'     => 'root',
  'password' => 'xxxxxx',
  'charset'  => 'utf8mb4'
);
```

## Archivo de configuración del cliente de correo electrónico

Por defecto, `nabu` busca el archivo `email.config` dentro de la carpeta raíz del proyecto.

Estructura del archivo de configuración:

```php
<?php

return array(
  'smtp'     => 'smtp.example.com',
  'port'     => 587,
  'address'  => 'foo@example.com',
  'password' => 'xxxxxx'
);
```

---

## Licencia

```text
nabu - Un sistema gestor de contenido (CMS) para artículos en Markdown, escrito en PHP.

Copyright (C) 2021  Ricardo García Jiménez          <ricardogj08@riseup.net>,
                    Juan José Ramírez López         <juan.ramirez.j99@gmail.com>,
                    Francisco Solís Martínez        <franciscosolism08@gmail.com>,
                    Fernando Andrés Chávez Gavaldón <fernandochg26@gmail.com>

Este programa es software libre: puedes redistribuirlo y/o modificarlo
bajo los términos de la Licencia Pública General de GNU Affero publicada por
la Free Software Foundation, ya sea la versión 3 de la Licencia, o
(a su elección) cualquier versión posterior.

Este programa se distribuye con la esperanza de que sea de utilidad,
pero SIN NINGUNA GARANTÍA; incluso sin la garantía implícita de
COMERCIABILIDAD o APTITUD PARA UN PROPÓSITO PARTICULAR. Consulte la
Licencia Pública General de GNU Affero para obtener más detalles.

Debería haber recibido una copia de la Licencia Pública General de GNU Affero
junto con este programa. De lo contrario, consulte <https://www.gnu.org/licenses/>.
```
